<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
   <meta name="Author" content="Johannes Sixt">
   <title>KDbg - Benutzerhandbuch</title>
</head>
<body text="#000000" bgcolor="#FFFFFF">

<h1>
KDbg - Benutzerhandbuch</h1>

<h2>
Inhalt</h2>

<ul>
<li>
<a href="#Introduction">Einleitung</a></li>

<li>
<a href="#UsingKDbg">Mit KDbg arbeiten</a></li>

<li>
<a href="#InfoWindows">Die Informationsfenster von KDbg</a></li>

<li>
<a href="#TipsTricks">Tipps und so weiter</a></li>

<li>
Für Fortgeschrittene: <a href="../../en/kdbg/types.html">Typentabellen</a>
(nur Englisch)</li>

<li>
<a href="#Author">Autor</a></li>
</ul>

<hr>
<h2>
<a NAME="Introduction"></a>Einleitung</h2>
<p>KDbg ist eine grafische Benutzeroberfläche für <tt>gdb</tt>,
den GNU-Debugger.</p>
<p>Das bedeutet, dass KDbg selbst nicht der Debugger ist. Vielmehr kommuniziert
KDbg mit <tt>gdb</tt>, indem Befehlszeilen and diesen geschickt werden
und die Ausgabe, wie z.B. Variablenwerte, entgegengenommen werden. Die
Menübefehle und Mausklicks werden in <tt>gdb</tt>-Befehle umgesetzt,
und die Ausgabe von <tt>gdb</tt> wird in (mehr oder weniger) sichtbare
Information umgesetzt, wie zum Beispiel die Struktur von Variablen.</p>
<p>Eine Folge davon ist, dass KDbg vollständig von den Fähigkeiten
des verwendeten Befehlszeilendebuggers, <tt>gdb</tt>, abhängig ist.
KDbg kann nicht mehr als <tt>gdb</tt> leisten. Wenn Sie zum Beispiel einen
<tt>gdb</tt>
haben, der Programme mit Threads nicht unterstützt, dann kann auch
KDbg das nicht (obwohl ein Threads-Fenster vorhanden ist).</p>
<h2>
<a NAME="UsingKDbg"></a>Mit KDbg arbeiten</h2>
<p>Bevor Sie mit der Arbeit beginnen, sollten Sie die <a href="globaloptions.html">globalen
Einstellungen</a> prüfen, indem Sie <i>Einstellungen|Globale Einstellungen</i>
aufrufen.</p>
<h4>
Ein zu debuggendes Program angeben</h4>
<p>Um ein Programm zu debuggen, wählen Sie <i>Datei|Programm laden</i>. Wenn
Sie das Programm schon einmal debuggt haben, können Sie es auch aus
der Liste unter <i>Datei|Zuletzt göffnete Programme</i> wählen.
Das Programm wird jetzt geladen.</p>
<p>Wenn Sie einen Core-Dump verwenden wollen, müssen Sie zuerst das
Programm, das den Core-Dump erzeugt hat wie gerade erwähnt laden,
dann wählen Sie <i>Datei|Core-Dump</i> aus dem Menü. KDbg zeigt
die Stelle an, die den Core-Dump verursacht hat.</p>
<p>Sie können nun Haltepunkte setzen, indem Sie die Einträge
im Menü <i>Haltepunkt</i> oder im Rechte-Maus-Menü oder in der
<a href="breakptlist.html">Liste
der Haltepunkte</a> verwenden.</p>
<p>Sie können auch <a href="pgmsettings.html">programmspezifische
Einstellungen</a> vornehmen, indem Sie <i>Einstellungen|Dieses Programm</i> wählen.</p>
<h4>
Das Programm ausführen</h4>
<p>Nun führen Sie das Programm aus, indem Sie <i>Ausführung|Ausführen</i>
wählen. Das Programm arbeitet nun wie gewöhnlich, bis es beendet
wird, auf einen Haltepunkt oder Watchpoint trifft, oder ein Signal empfängt.</p>
<p>Sie können das Programm mit Argumenten ausführen, ein Arbeitsverzeichnis
festlegen und auch Umgebungsvariablen definieren. Dazu wählen Sie
<i>Ausführung|Argumente</i>
und machen Ihre Angaben im <a href="argspwdenv.html">Programmargumente-Dialog</a>.</p>
<p>Weiters können Sie sich in ein Programm einhängen (<i>attachen</i>),
das bereits ausgeführt wird. Dazu laden Sie das Programm zuerst wie
oben beschrieben, dann wählen Sie <i>Ausführung|Attachen</i>.
Geben Sie die Prozessnummer an und klicken Sie <i>OK</i>. Das Programm
wird jetzt angehalten (aber nicht beendet), und der derzeitige Stand des
Programms wird im <a href="sourcecode.html">Quellcode-Fenster</a> angezeigt.</p>
<h4>
Das Programm wurde angehalten - was nun?</h4>
<p>Wenn das Programm an einem Haltepunkt, Watchpoint oder wegen eines Signals
angehalten wird, zeigt das <a href="sourcecode.html">Quellcode-Fenster</a>
die Zeile, in der das Programm gerade arbeitete. Es passiert häufig,
dass das Programm wegen eine Signals (oftmals <tt>SIGSEGV</tt>, Speicherzugriffsfehler)
in einer Funktion angehalten wird, die sich nicht in jenem Programmteil
befindet, den Sie geschrieben haben. In diesem Fall betrachten Sie das
<a href="stack.html">Stack-Fenster</a>
genauer: Suchen Sie nach einer Funktion, die Sie geschrieben haben (beginnen
Sie am oberen Ende) und klicken Sie darauf. Das bringt Sie an eine Stelle,
an der Sie mit der Suche nach dem tatsächlichen Programmfehler beginnen
können.</p>
<p>Im Menü <i>Ausführung</i> finden Sie Befehle, die Sie zum
Ausführen und schrittweisen Abarbeiten des Programms verwenden. Weiters
können Sie das laufende Programm unterbrechen. Die wichtigen Befehle
können auch mit Funktionstasten gegeben werden. Zum effizienten Arbeiten
empfehle ich, dass Sie sich diese Tasten eingewöhnen.
Sie können <i>Einstellungen|Kurzbefehle festlegen</i> verwenden, falls
Sie die Funktionen anderen Tasten zuweisen wollen.</p>
<p>Im Menü <i>Haltepunkt</i> finden Sie Befehle zum Setzen, Entfernen,
Aktivieren und Inaktivieren von permanenten und temporären Haltepunkten.
Natürlich können Sie auch eine <a href="breakptlist.html">Liste
der Haltepunkte</a> anzeigen. Sie können einen Haltepunkt auch setzen,
indem Sie mit der Maus in den Freiraum links der entsprechenden Quellcode-Zeile
klicken (mit der linken Maustaste); weiters können sie einen vorhandenen
Haltepunkt mit der mittleren Maustaste aktivieren und deaktivieren.</p>
<p>Die Animation in der Werkzeugleiste zeigt an, ob das Programm gerade läuft.
Sie bleibt stehen, sobald das Programm an einem Haltepunkt oder aus einem
anderen Grund angehalten wird oder sobald es beendet wird.
Ein Klick auf die Animation hat die Funktion von <i>Ausführung|Unterbrechen</i>.</p>
<h2>
<a NAME="InfoWindows"></a>Die Informationsfenster von KDbg</h2>
<p>KDbg zeigt Information in einer Reihe verschiedener Fenster an. Im Menü
<i>Ansicht</i>
finden Sie die Befehle, die diese Fenster anzeigen und schließen. Es handelt
sich dabei um <i>dockende</i> Fenster, sodass Sie deren Anordnung beliebig
verändern können.</p>
<ul>
<li>
<a href="sourcecode.html">Das Quellcode-Fenster</a></li>

<li>
<a href="localvars.html">Lokale Variablen</a></li>

<li>
<a href="stack.html">Der Programm-Stack</a></li>

<li>
<a href="watches.html">Beobachtete Ausdrücke</a></li>

<li>
<a href="breakptlist.html">Die Liste der Haltepunkte</a></li>

<li>
<a href="pgmoutput.html">Das Programmausgabefenster</a></li>

<li>
<a href="registers.html">Die Registerinhalt</a></li>

<li>
<a href="memory.html">Der Speicherinhalt</a></li>

<li>
<a href="threads.html">Die Programm-Threads</a></li>
</ul>

<h2>
<a NAME="TipsTricks"></a>Tipps und so weiter</h2>

<ul>
<li>
<a href="tips.html">Tipps</a></li>

<li>
<a href="howdoi.html">Wie kann ich...?</a></li>
</ul>

<h2>
<a NAME="Author"></a>Autor</h2>
<p>KDbg wurde von <a href="mailto:j6t@kdbg.org">Johannes Sixt</a>
mit vielen weiteren Helfern geschrieben.
<br>Die KDbg-Homepage befindet sich unter <a href="http://www.kdbg.org/">http://www.kdbg.org/</a>.</p>
</body>
</html>
